// ES Next
class Person {
  // 你只要 new Person('ifer', 18)，constructor 就会自动执行
  constructor(name, age, address) {
    // constructor 中的 this 永远永远永远是实例
    // !#1 实例属性
    this.name = name
    this.age = age
    // this.xxx = function() {}
    this.address = address
  }
  // 实例属性，相当于在 constructor 中写了 this.address = ?
  address = '河南'
  // 实例方法，相当于在 constructor 中写 this.temp = () => {}
  temp = () => {
    console.log('temp')
  }
  // !#2 原型方法
  say() {
    console.log(1)
  }
  // !#3 静态属性
  static version = 2
}

// 这也叫静态的属性，不过一般不这样写了，建议 #3 的写法
Person.version2 = 3

const p1 = new Person('ifer', 18, '武汉')
const p2 = new Person('elser', 19, '河南')
console.log(p1.temp === p2.temp)